All files / vidly/routes genres.js

100% Statements 36/36
100% Branches 10/10
100% Functions 5/5
100% Lines 31/31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 532x 2x 2x 2x 2x 2x 2x   2x 1x 1x     2x 5x 5x   3x 3x   3x     2x 5x 5x   3x       3x   2x     2x 3x   3x   2x     2x 2x   2x   1x     2x
const validateObjectId = require('../middleware/validateObjectId');
const auth = require('../middleware/auth');
const admin = require('../middleware/admin');
const {Genre, validate} = require('../models/genre');
const mongoose = require('mongoose');
const express = require('express');
const router = express.Router();
 
router.get('/', async (req, res) => {
  const genres = await Genre.find().sort('name');
  res.send(genres);
});
 
router.post('/', auth, async (req, res) => {
  const { error } = validate(req.body); 
  if (error) return res.status(400).send(error.details[0].message);
 
  let genre = new Genre({ name: req.body.name });
  genre = await genre.save();
  
  res.send(genre);
});
 
router.put('/:id', [auth, validateObjectId], async (req, res) => {
  const { error } = validate(req.body); 
  if (error) return res.status(400).send(error.details[0].message);
 
  const genre = await Genre.findByIdAndUpdate(req.params.id, { name: req.body.name }, {
    new: true
  });
 
  if (!genre) return res.status(404).send('The genre with the given ID was not found.');
  
  res.send(genre);
});
 
router.delete('/:id', [auth, admin, validateObjectId], async (req, res) => {
  const genre = await Genre.findByIdAndRemove(req.params.id);
 
  if (!genre) return res.status(404).send('The genre with the given ID was not found.');
 
  res.send(genre);
});
 
router.get('/:id', validateObjectId, async (req, res) => {
  const genre = await Genre.findById(req.params.id);
 
  if (!genre) return res.status(404).send('The genre with the given ID was not found.');
 
  res.send(genre);
});
 
module.exports = router;